﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class DanhMuc_QuanLyDoanVien : System.Web.UI.Page
{
    _dbDataContext _db = new _dbDataContext();
    public SecurityLib.Sec_AES _ps = new SecurityLib.Sec_AES();
    static string donvi1 = "";
    public string st = "";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            donvi1 = _ps.Decrypt(Request.QueryString["dvid"].Replace(" ", "+"), "gold", 128);
            st = _ps.Decrypt(Request.QueryString["tid"].Replace(" ", "+"), "gold", 128);
        }
    }
    //hàm bidding dữ liệu theo điều kiện tìm kiếm
    private void BindGrid()
    {
        int small_old, big_old;
        DateTime _from_y_old, _to_y_old;
        //string donvi = MemberShip_ASP.GetMaDonViFromUserName(Page.User.Identity.Name).Trim();
        string donvi = _ps.Decrypt(Request.QueryString["dvid"].Replace(" ", "+"), "gold", 128);
        if (txtfrom.Text == "" && txtto.Text == "" && txtHoten.Text == "" && txtmadonvien.Text == "")
        {
            var val = (from p in _db.tblDoanViens.Where(r => r.TrangThai == 1 && r.TrangThaiXoa == false && r.TrucThuoc.Trim() == donvi)
                       select new
                       {
                           MaDoanVien = p.MaDonVien.Trim(),
                           TenDoanVien = p.HoTen.Trim(),
                           Phai = (p.Phai == true ? "Nam" : "Nữ"),
                           NgaySinh = string.Format("{0:dd/MM/yyyy}", p.NgaySinh),
                           CMND = (p.CMND!=null?p.CMND.Trim():""),
                           DoanVienSinhHoatNoiCuTru=p.DoanVienSinhHoatNoiCuTru,
                           GioiThieuDang=(_db.tblGioiThieuChoDangs.Where(r=>r.MaDoanVien.Trim()==p.MaDonVien.Trim()).Count()==1?true:false),
                           KetNap=(p.DangVien==true?false:true)
                       }).ToList();
            for (int i = 0; i < grid.Columns.Count; i++)
                grid.Columns[i].ItemStyle.Wrap = false;
            statusLabel.Text = "";
            grid.DataSource = val;
            grid.DataBind();
        }
        else if(txtmadonvien.Text != "")
        {
            txtto.Text = "";
            txtfrom.Text = "";
            txtHoten.Text = "";
            var val = (from p in _db.tblDoanViens where  p.MaDonVien.Trim() == txtmadonvien.Text.Trim().ToString() && p.TrangThai == 1 && p.TrangThaiXoa == false && p.TrucThuoc.Trim() == donvi       
                       select new
                       {
                           MaDoanVien = p.MaDonVien.Trim(),
                           TenDoanVien = p.HoTen.Trim(),
                           Phai = (p.Phai == true ? "Nam" : "Nữ"),
                           NgaySinh = string.Format("{0:dd/MM/yyyy}", p.NgaySinh),
                           CMND = p.CMND.Trim(),
                           DoanVienSinhHoatNoiCuTru = p.DoanVienSinhHoatNoiCuTru,
                           GioiThieuDang = (_db.tblGioiThieuChoDangs.Where(r => r.MaDoanVien.Trim() == p.MaDonVien.Trim()).Count() == 1 ? true : false),
                           KetNap = (p.DangVien == true ? false : true)
                       }).ToList();
            for (int i = 0; i < grid.Columns.Count; i++)
                grid.Columns[i].ItemStyle.Wrap = false;
            statusLabel.Text = "";
            grid.DataSource = val;
            grid.DataBind();
        }
        else if (txtHoten.Text != "" && txtmadonvien.Text == "" && txtfrom.Text == "" && txtto.Text == "")
        {
            var val = (from p in _db.tblDoanViens
                       where p.HoTen.Trim().Contains(txtHoten.Text.Trim().ToString()) && p.TrangThai == 1 && p.TrangThaiXoa == false && p.TrucThuoc.Trim() == donvi
                       select new
                       {
                           MaDoanVien = p.MaDonVien.Trim(),
                           TenDoanVien = p.HoTen.Trim(),
                           Phai = (p.Phai == true ? "Nam" : "Nữ"),
                           NgaySinh = string.Format("{0:dd/MM/yyyy}", p.NgaySinh),
                           CMND = p.CMND.Trim(),
                           DoanVienSinhHoatNoiCuTru = p.DoanVienSinhHoatNoiCuTru,
                           GioiThieuDang = (_db.tblGioiThieuChoDangs.Where(r => r.MaDoanVien.Trim() == p.MaDonVien.Trim()).Count() == 1 ? true : false),
                           KetNap = (p.DangVien == true ? false : true)
                       }).ToList();
          
            statusLabel.Text = "";
            grid.DataSource = val;
            grid.DataBind();

        }
        else if(txtHoten.Text != "" && txtmadonvien.Text == ""&&txtfrom.Text!=""&&txtto.Text!="")
        {
            
                big_old = int.Parse(txtto.Text);
                small_old = int.Parse(txtfrom.Text);
                _from_y_old = tuoi_to_datetime(big_old);
                _to_y_old = tuoi_to_datetime(small_old);
                var val = (from p in _db.tblDoanViens
                           where (p.NgaySinh >= _from_y_old && p.NgaySinh <= _to_y_old) || p.HoTen.Trim().Contains(txtHoten.Text.Trim().ToString()) && p.TrangThai == 1 && p.TrangThaiXoa == false && p.TrucThuoc.Trim() == donvi 
                       select new
                       {
                           MaDoanVien = p.MaDonVien.Trim(),
                           TenDoanVien = p.HoTen.Trim(),
                           Phai = (p.Phai == true ? "Nam" : "Nữ"),
                           NgaySinh = string.Format("{0:dd/MM/yyyy}", p.NgaySinh),
                           CMND = p.CMND.Trim(),
                           DoanVienSinhHoatNoiCuTru = p.DoanVienSinhHoatNoiCuTru,
                           GioiThieuDang = (_db.tblGioiThieuChoDangs.Where(r => r.MaDoanVien.Trim() == p.MaDonVien.Trim()).Count() == 1 ? true : false),
                           KetNap = (p.DangVien == true ? false : true)
                       }).ToList();
            for (int i = 0; i < grid.Columns.Count; i++)
                grid.Columns[i].ItemStyle.Wrap = false;
            statusLabel.Text = "";
            grid.DataSource = val;
            grid.DataBind();
            
        }
        else if (txtHoten.Text == "" && txtmadonvien.Text == "" && txtfrom.Text != "" && txtto.Text != "")
        {
            
                big_old = int.Parse(txtto.Text);
                small_old = int.Parse(txtfrom.Text);
                _from_y_old = tuoi_to_datetime(big_old);
                _to_y_old = tuoi_to_datetime(small_old);
                var val = (from p in _db.tblDoanViens
                           where (p.NgaySinh >= _from_y_old && p.NgaySinh <= _to_y_old) && p.TrangThai == 1 && p.TrangThaiXoa == false && p.TrucThuoc.Trim() == donvi 
                           select new
                           {
                               MaDoanVien = p.MaDonVien.Trim(),
                               TenDoanVien = p.HoTen.Trim(),
                               Phai = (p.Phai == true ? "Nam" : "Nữ"),
                               NgaySinh = string.Format("{0:dd/MM/yyyy}", p.NgaySinh),
                               CMND = p.CMND.Trim(),
                               DoanVienSinhHoatNoiCuTru = p.DoanVienSinhHoatNoiCuTru,
                               GioiThieuDang = (_db.tblGioiThieuChoDangs.Where(r => r.MaDoanVien.Trim() == p.MaDonVien.Trim()).Count() == 1 ? true : false),
                               KetNap = (p.DangVien == true ? false : true)
                           }).ToList();
                for (int i = 0; i < grid.Columns.Count; i++)
                    grid.Columns[i].ItemStyle.Wrap = false;
                statusLabel.Text = "";
                grid.DataSource = val;
                grid.DataBind();
            
        }
        else if ((txtHoten.Text == "" && txtmadonvien.Text == "") || txtfrom.Text != "" || txtto.Text != "")
        {
            if (txtfrom.Text == "")
            {
                txtfrom.Text = "0";
            }
            if (txtto.Text == "")
            {
                txtto.Text = "200";
            }
            else
            {
                big_old = int.Parse(txtto.Text);
                small_old = int.Parse(txtfrom.Text);
                _from_y_old = tuoi_to_datetime(big_old);
                _to_y_old = tuoi_to_datetime(small_old);
                var val = (from p in _db.tblDoanViens
                           where (p.NgaySinh >= _from_y_old && p.NgaySinh <= _to_y_old) && p.TrangThai == 1 && p.TrangThaiXoa == false && p.TrucThuoc.Trim() == donvi 
                           select new
                           {
                               MaDoanVien = p.MaDonVien.Trim(),
                               TenDoanVien = p.HoTen.Trim(),
                               Phai = (p.Phai == true ? "Nam" : "Nữ"),
                               NgaySinh = string.Format("{0:dd/MM/yyyy}", p.NgaySinh),
                               CMND = p.CMND.Trim(),
                               DoanVienSinhHoatNoiCuTru = p.DoanVienSinhHoatNoiCuTru,
                               GioiThieuDang = (_db.tblGioiThieuChoDangs.Where(r => r.MaDoanVien.Trim() == p.MaDonVien.Trim()).Count() == 1 ? true : false),
                               KetNap = (p.DangVien == true ? false : true)
                           }).ToList();
                for (int i = 0; i < grid.Columns.Count; i++)
                    grid.Columns[i].ItemStyle.Wrap = false;
                statusLabel.Text = "";
                grid.DataSource = val;
                grid.DataBind();
            }
        }
       

    }
    //hàm đổi tuổi ra tháng năm
    public DateTime tuoi_to_datetime(int tuoi)
    {
        DateTime dt=DateTime.Now.AddYears(-tuoi);
        string st = string.Format("{0:dd/MM/yyyy}", dt);
        return CatalogAccess.ConvertToDate(st);
        
    }
    //event tìm kiếm đoàn viên
    protected void btnfind_Click(object sender, EventArgs e)
    {
        BindGrid();
    }
    //hàm chuyển đổi ngày sinh sang tuổi
    public double tuoi(DateTime ngaysinh)
    {
        DateTime now_dt = DateTime.Now;
        int numDaysDiff = now_dt.Subtract(ngaysinh).Days;
        double tuoi = Math.Round((double)(numDaysDiff / 365), MidpointRounding.ToEven);
        return tuoi;
    }
    //hàm chuyển đổi ngày sinh ra số ngày
    public double songaysinh(DateTime ngaysinh)
    {
        DateTime now_dt = DateTime.Now;
        int numDaysDiff = now_dt.Subtract(ngaysinh).Days;
        return numDaysDiff;
    }

    protected void chkInGridviewHeader_CheckedChanged(object sender, EventArgs e)//day la ham de goi trong header cua itemtemplate
    {
        CheckBox chk = (CheckBox)sender;
        CheckBox chkitem;
        foreach (GridViewRow dr in grid.Rows)
        {
            chkitem = (CheckBox)dr.FindControl("chkchon");
            if (chk.Checked == true)
            {
                chkitem.Checked = true;
            }
            else
            {
                chkitem.Checked = false;
            }
        }
    }
    protected void btnsave_Click(object sender, EventArgs e)
    {
        CheckBox select;
        string id = "";
        foreach (GridViewRow dr in grid.Rows)
        {
            select = (CheckBox)dr.FindControl("chkchon");
            if (select.Checked == true)
            {
                id = grid.DataKeys[dr.RowIndex].Value.ToString().Trim();
                break;
            }
        }
        if (id != "")
        {
            bool success = CatalogAccess.InsertKhaiTru_TruongThanh(txtNghiQuyet.Text,txtLyDo.Text,txtNgayKy.Text,id,false);
            if (success)
            {
                success = CatalogAccess.CapNhatTrangThaiDoanVien(id, 5);
                
                if (success)
                {
                    CatalogAccess.InsertHistoryDoanVien(id, MemberShip_ASP.GetDisplayName(this.Page.User.Identity.Name), DateTime.Now.ToString("dd/MM/yyyy"), "Khai trừ");
                    statusLabel.Visible = true;
                    statusLabel.Text = "Thực hiện thành công!";
                    BindGrid();
                }
                else
                {
                    statusLabel.Visible = true;
                    statusLabel.Text = "Không thực hiện được!";
                }
            }
            else
            {
                statusLabel.Visible = true;
                statusLabel.Text = "Không thực hiện được!";
            }
        }
        else
        {
            statusLabel.Visible = true;
            statusLabel.Text = "Chọn 1 đoàn viên!";
        }
    }
    protected void btnsave1_Click(object sender, EventArgs e)
    {
        CheckBox select;
        string id = "";
        foreach (GridViewRow dr in grid.Rows)
        {
            select = (CheckBox)dr.FindControl("chkchon");
            if (select.Checked == true)
            {
                id = grid.DataKeys[dr.RowIndex].Value.ToString().Trim();
                break;
            }
        }
        if (id != "")
        {
            bool success = CatalogAccess.InsertKhaiTru_TruongThanh(txtNghiQuyetTruongThanh.Text, txtLyDoTruongThanh.Text, txtNgayKyTruongThanh.Text, id, true);
            if (success)
            {
                success = CatalogAccess.CapNhatTrangThaiDoanVien(id, 3);
                if (success)
                {
                    CatalogAccess.InsertHistoryDoanVien(id, MemberShip_ASP.GetDisplayName(this.Page.User.Identity.Name), DateTime.Now.ToString("dd/MM/yyyy"), "Trưởng thành đoàn");
                    statusLabel.Visible = true;
                    statusLabel.Text = "Thực hiện thành công!";
                    BindGrid();
                }
                else
                {
                    statusLabel.Visible = true;
                    statusLabel.Text = "Không thực hiện được!";
                }
            }
            else
            {
                statusLabel.Visible = true;
                statusLabel.Text = "Không thực hiện được!";
            }
        }
        else
        {
            statusLabel.Visible = true;
            statusLabel.Text = "Chọn 1 đoàn viên!";
        }
    }
  
    public List<TextBox> GetTextBoxControls(Control ctrl)
    {
        var uCtrls = new List<TextBox>();
        foreach (Control child in ctrl.Controls)
        {
            if (child is TextBox) uCtrls.Add((TextBox)child);
            uCtrls.AddRange(GetTextBoxControls(child));
        }
        return uCtrls;
    }
    private void XemChiTietDoanVien(string madoanvien)
    {
        pncontent.Visible = false;
        pnPrint.Visible = false;
        pndetail.Visible = true;
        //xoa toan bo du lieu cu truoc khi dua du lieu moi vao
        var listOfUserControls = GetTextBoxControls(pndetail);
        foreach (TextBox ctrl in listOfUserControls)
        {
            ctrl.Text = "";
            ctrl.ReadOnly = true;
        }
        //dua du lieu vao
        var list = _db.tblDoanViens.Single(r => r.MaDonVien.Trim() == madoanvien.Trim());
        txtMaDoanVien1.Text = list.MaDonVien.Trim();
        txtHoten1.Text = list.HoTen.Trim();
        txtgioitinh.Text = (list.Phai == true ? "Nam" : "Nữ");
        txtngaysinh.Text = string.Format("{0:dd/MM/yyyy}", list.NgaySinh);
        txtCMND.Text = list.CMND;
        txtngaycap.Text = string.Format("{0:dd/MM/yyyy}", list.NgayCapCMND);
        txtNoiCap.Text = list.NoiCap;
        txtNguyenquan.Text = list.NguyenQuan;
        txtThuongTru.Text = list.HoKhauThuongTru;
        txtHienNay.Text = list.ChoOHienNay;
        txtDienthoai.Text = list.DienThoai;
        txtEmail.Text = list.Email;
        try { txtdantoc.Text = list.tblDanhMuc.TenDanhMuc; }
        catch { }
        try { txttongiao.Text = list.tblDanhMuc1.TenDanhMuc; }
        catch { }
        try { txthonnhan.Text = list.tblDanhMuc2.TenDanhMuc; }
        catch { }
        txtXuatthan.Text = list.XuatThan;
        txtNghenghiep.Text = list.NgheNghiep;
        txtMota.Text = list.MoTaCongViec;
        txtDiaBanDanCu.Text = (list.DiaBanDanCuID != null ? list.tblDanhMuc5.TenDanhMuc : "");
        txttrinhdo.Text = list.TrinhDoVanHoa;
        txttrinhdochuyenmon.Text = (list.TrinhDoChuyenMonID != null ? list.tblDanhMuc6.TenDanhMuc : "");
        txtdangvien.Text = ((bool)list.DangVien==true?"Có":"Không");
        try
        {
            txtChucVuDoan.Text = list.tblDanhMuc7.TenDanhMuc.Trim();
        }
        catch { }
        txtbang1.Text = list.BangCap.Split('@')[0];
        txtbang2.Text = list.BangCap.Split('@')[1];
        try { txtngoaingu.Text = list.tblDanhMuc3.TenDanhMuc; }
        catch { }
        try { txttinhoc.Text = list.tblDanhMuc4.TenDanhMuc; }
        catch { }
        txtsuckhoe.Text = list.SucKhoe;
        txtngayvaodoan.Text = string.Format("{0:dd/MM/yyyy}", list.NgayVaoDoan);
        if (list.PhatTrienMoi == false)
        {
            txtphattrienmoi.Text = (list.PhatTrienMoi == true ? "Phát triển mới" : "Đơn vị khác chuyển đến");
            txtngaychuyenden.Text = string.Format("{0:dd/MM/yyyy}", list.NgayChuyenDen);
            txtDonViCu.Text = list.DonViCu;
            txtphattrienmoi.Visible = true;
            txtngaychuyenden.Visible = true;
            txtDonViCu.Visible = true;
        }
        else
        {
            txtphattrienmoi.Visible = false;
            txtngaychuyenden.Visible = false;
            txtDonViCu.Visible = false;
        }
    }
    protected void btnclose_Click(object sender, EventArgs e)
    {
        pncontent.Visible = true;
        pndetail.Visible = false;
        pnPrint.Visible=false;
    }
    private int GetColumnIndexByName(GridView grid, string name)
    {
        foreach (DataControlField col in grid.Columns)
        {
            if (col.HeaderText.ToLower().Trim() == name.ToLower().Trim())
            {
                return grid.Columns.IndexOf(col);
            }
        }

        return -1;
    }
    protected void grid_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        //neu chon xem chi tiet 
        if (e.CommandName == "XemChiTietDoanVien")
        {
            XemChiTietDoanVien(e.CommandArgument.ToString().Trim());
        }
        //new chon xoa
        else if (e.CommandName == "DeleteDoanVien")
        {
            string id = e.CommandArgument.ToString();
            CatalogAccess.Xoa_PhucHoi_DoanVien(id, true);
            CatalogAccess.InsertHistoryDoanVien(id, MemberShip_ASP.GetDisplayName(this.Page.User.Identity.Name),DateTime.Now.ToString("dd/MM/yyyy"), "Xóa tên tạm thời");
            BindGrid();
        }
        //neu chon in
        else if (e.CommandName == "PrintDoanVien")
        {
            string id = e.CommandArgument.ToString().Trim();
            PrintProfile(id);
        }
    }

    private void PrintProfile(string madoanvien)
    {
        pncontent.Visible = false;
        pndetail.Visible = false;
        pnPrint.Visible = true;
        var val = _db.tblDoanViens.Single(r => r.MaDonVien.Trim() == madoanvien);
        lblhotenprint.Text = val.HoTen;
        lbltengoikhacprint.Text = "";
        lblngaysinhprint.Text = string.Format("{0:dd/mm/yyyy}", val.NgaySinh);
        lblgioitinhprint.Text = (val.Phai == true ? "Nam" : "Nữ");
        lblnoisinhprint.Text = val.NoiSinh;
        lblnguyenquanprint.Text = val.NguyenQuan;
        lbldantocprint.Text = (val.DanToc != null ? val.tblDanhMuc.TenDanhMuc : "");
        lbltongiaoprint.Text = (val.TonGiao != null ? val.tblDanhMuc1.TenDanhMuc : "");
        lblxuatthanprint.Text = val.XuatThan;
        lblthuongtruprint.Text = val.HoKhauThuongTru;
        lblchoohiennayprint.Text = val.ChoOHienNay;
        lblemailprint.Text = val.Email;
        lbldienthoaiprint.Text = val.DienThoai;
        lblnghenghiepprint.Text = val.NgheNghiep;
        lbldonviprint.Text = val.tblCoSoDoan.TenDonVi;
        lblcmndprint.Text = val.CMND;
        lblngaycapcmndprint.Text = string.Format("{0:dd/MM/yyyy}", val.NgayCapCMND);
        lblnoicapcmndprint.Text = val.NoiCap;
        lblngayvaodoanprint.Text = string.Format("{0:dd/MM/yyyy}", val.NgayVaoDoan);
        lbltrinhdovanhoaprint.Text = val.TrinhDoVanHoa;
        lbltrinhdohocvanprint.Text = val.BangCap.Split('@')[0] + "-" + val.BangCap.Split('@')[1];
        //lay du lieu cong tac doan
        var itemcongtacdoan = _db.tblCongTacDoans.Where(r => r.MaDoanVien.Trim() == madoanvien);
        if (itemcongtacdoan.Count() > 0)
        {
            var item = itemcongtacdoan.First();
            lblchucvuprint.Text = (item.ChucVuHienTai != null ? item.tblDanhMuc2.TenDanhMuc : "");
            lblngayvaocongtacdoanprint.Text = string.Format("{0:dd/MM/yyyy}", item.NgayCongTac);
            lblphucapchucvuprint.Text = item.PhuCapChucVu;
            lblngachcongchucprint.Text = (item.NgachCongChuc != null ? item.tblDanhMuc3.TenDanhMuc : "");
            lblngachluongprint.Text = item.BacLuong;
            lblnhiemvuprint.Text = item.CongViec;
            lblcapuyenhientaiprint.Text = (item.CapUyHienTai != null ? item.tblDanhMuc.TenDanhMuc : "");
            lblcapuykiemprint.Text = (item.CapUyKiem != null ? item.tblDanhMuc1.TenDanhMuc : "");
        }
        //lay du lieu ly luan chinh tri
        try
        {
            var itemquanhexahoi = _db.tblQuanHeXaHois.Single(r => r.MaDoanVien.Trim() == madoanvien);
            lbllyluanchinhtriprint.Text = (itemquanhexahoi.LyLuanChinhTriID != null ? itemquanhexahoi.tblDanhMuc.TenDanhMuc : "");
            lblquanlynhanuocprint.Text = (itemquanhexahoi.QuanLyNhaNuocID != null ? itemquanhexahoi.tblDanhMuc1.TenDanhMuc : "");
            lbltrinhdotinhocprint.Text = (val.TinHoc != null ? val.tblDanhMuc3.TenDanhMuc : "");
            lbltrinhdongoaingu.Text = (val.NgoaiNgu != null ? val.tblDanhMuc4.TenDanhMuc : "");
            lblngayvaodangdubiprint.Text = string.Format("{0:dd/MM/yyyy}", itemquanhexahoi.NgayVaoDangDuBi);
            lblngayvaodangchinhthucprint.Text = string.Format("{0:dd/MM/yyyy}", itemquanhexahoi.NgayVaoDangChinhThuc);
            lblngaynhapnguprint.Text = string.Format("{0:dd/MM/yyyy}", itemquanhexahoi.NgayNhapNgu);
            lblngayxuatnguprint.Text = string.Format("{0:dd/MM/yyyy}", itemquanhexahoi.NgayXuatNgu);
            lblquanhamcaonhatprint.Text = itemquanhexahoi.QuanHam;
            lbldanhhieuprint.Text = (itemquanhexahoi.DanhHieuID != null ? itemquanhexahoi.tblDanhMuc4.TenDanhMuc : "");
            lblngaynhan.Text = string.Format("{0:dd/MM/yyyy}", itemquanhexahoi.NgayNhanDanhHieu);
            lblsotruongcongtacprint.Text = val.MoTaCongViec;
            lblkhenthuongprint.Text = itemquanhexahoi.KhenThuong;
            lblngaynhankhenthuongprint.Text = string.Format("{0:dd/MM/yyyy}", itemquanhexahoi.NgayNhanKhenThuong);
            lblkyluatprint.Text = itemquanhexahoi.KyLuat;
            lblngaynhankyluatprint.Text = string.Format("{0:dd/MM/yyyy}", itemquanhexahoi.NgayBiKyLuat);
            lblsuckhoeprint.Text = val.SucKhoe;
            lblthuongbinhprint.Text = (itemquanhexahoi.ThuongBinhID != null ? itemquanhexahoi.tblDanhMuc2.TenDanhMuc : "");
            lblgiadinhchinhsachprint.Text = (itemquanhexahoi.GiaDinhChinhSachID != null ? itemquanhexahoi.tblDanhMuc3.TenDanhMuc : "");
        }
        catch { }
        //lay du lieu qua trinh hoc tap
        var listquatrinhhoctap = _db.tblQuaTrinhHocTaps.Where(r => r.MaDoanVien.Trim() == madoanvien);
        string st = "";
        foreach (var itemquatrinhhoctap in listquatrinhhoctap)
        {
            st += "<tr><td>" + itemquatrinhhoctap.TenTruong + "</td><td>" + itemquatrinhhoctap.NganhHoc + "</td><td>" + string.Format("{0:dd/MM/yyyy}", itemquatrinhhoctap.TuNgay) + "-" + string.Format("{0:dd/MM/yyyy}", itemquatrinhhoctap.DenNgay) + "</td><td>" + itemquatrinhhoctap.tblDanhMuc1.TenDanhMuc + "</td><td>" + itemquatrinhhoctap.tblDanhMuc2.TenDanhMuc + "</td></tr>";
        }
        lblquatrinhhoctapprint.Text = st;
        //lay du lieu qua trinh cong tac
        var listquatrinhcongtac = _db.tblLyLichLamViecs.Where(r => r.MaDoanVien.Trim() == madoanvien);
        st = "";
        foreach (var itemquatrinhcongtac in listquatrinhcongtac)
        {
            st += "<tr><td>" + string.Format("{0:dd/MM/yyyy}", itemquatrinhcongtac.TuNgay) + " - " + string.Format("{0:dd/MM/yyyy}", itemquatrinhcongtac.DenNgay) + "</td><td>" + itemquatrinhcongtac.TenCongViec + "</td><td>" + itemquatrinhcongtac.CongTy + "</td><td>" + itemquatrinhcongtac.ChucVu + "</td><td>" + itemquatrinhcongtac.MoTaCongViec + "</td><td>" + itemquatrinhcongtac.LyDoThoiViec + "</td></tr>";
        }
        lblquantrinhcongtacprint.Text = st;
        //lay thong tin ve quan he gia dinh
        var listquanhegiadinh = _db.tblQuanHeGiaDinhs.Where(r => r.MaDoanVien.Trim() == madoanvien);
        //dua du lieu vao phan ve nhan than
        st = "";
        foreach (var itemvenhanthan in listquanhegiadinh.Where(r => r.Loai == true).ToList())
        {
            st += "<tr><td>" + itemvenhanthan.HoVaTen + "</td><td>" + DateTime.Parse(itemvenhanthan.NgaySinh.ToString()).Year.ToString() + "</td><td>" + itemvenhanthan.tblDanhMuc.TenDanhMuc + "</td><td>" + itemvenhanthan.GioiThieu + "</td></tr>";
        }
        lblquanhegiadinhvenhanthanprint.Text = st;
        //dua du lieu vao phan ve ven vo hoac chong
        st = "";
        foreach (var itemvenbenvohoachong in listquanhegiadinh.Where(r => r.Loai == false).ToList())
        {
            st += "<tr><td>" + itemvenbenvohoachong.HoVaTen + "</td><td>" + DateTime.Parse(itemvenbenvohoachong.NgaySinh.ToString()).Year.ToString() + "</td><td>" + itemvenbenvohoachong.tblDanhMuc.TenDanhMuc + "</td><td>" + itemvenbenvohoachong.GioiThieu + "</td></tr>";
        }
        lblquanhegiadinhvebenvochong.Text = st;
        //lay thong tin khac
        var listthongtinkhac = _db.tblThongTinKhacs.Single(r => r.MaDoanVien == madoanvien);
        lbldacdiembanthanprint.Text = listthongtinkhac.BanThan;
        lblquanhenuocngoaiprint.Text = listthongtinkhac.NuocNgoai1;
        lblnhanthanonuocngoaiprint.Text = listthongtinkhac.NuocNgoai2;
    }
    //hiệu chỉnh thông tin của đoàn viên
    protected void btnedit_Click1(object sender, EventArgs e)
    {
        CheckBox select;
        string id = "";
        string tendoanvien = "";
        foreach (GridViewRow dr in grid.Rows)
        {
            select = (CheckBox)dr.FindControl("chkchon");
            if (select.Checked == true)
            {
                id = grid.DataKeys[dr.RowIndex].Value.ToString().Trim();
                tendoanvien = ((Label)dr.FindControl("lblTenDoanVien")).Text;
                break;
            }
        }
        if (id != "")
        {
            Response.Redirect(PageURL.local + "DanhMuc/HieuChinhTheoMau2C.aspx?id=" + _ps.Encrypt("4", "gold", 128) + "&subid=" + _ps.Encrypt("2", "gold", 128) + "&codeunionists=" + _ps.Encrypt(id.ToString(), "gold", 128) + "&nameunionists=" + _ps.Encrypt(tendoanvien, "gold", 128));
        }
        else
        {
            statusLabel.Visible = true;
            statusLabel.Text = "Chọn 1 đoàn viên!";
        }
    
    }
    //hàm xóa đoàn viên tạm thời
    protected void btndelete_Click1(object sender, EventArgs e)
    {
         
        CheckBox select;
        string id = "";
        foreach (GridViewRow dr in grid.Rows)
        {
            select = (CheckBox)dr.FindControl("chkchon");
            if (select.Checked == true)
            {
                id = grid.DataKeys[dr.RowIndex].Value.ToString().Trim();
                CatalogAccess.Xoa_PhucHoi_DoanVien(id, true);
                CatalogAccess.InsertHistoryDoanVien(id, MemberShip_ASP.GetDisplayName(this.Page.User.Identity.Name), DateTime.Now.ToString("dd/MM/yyyy"), "Xóa tên tàm thời");
            }
        }
        BindGrid();   
    }

    //hàm chuyển sinh hoạt của đoan viên
    protected void btnChuyen_Click1(object sender, EventArgs e)
    {
        
        CheckBox select;
        string id = "";
        string tendoanvien = "";
        foreach (GridViewRow dr in grid.Rows)
        {
            select = (CheckBox)dr.FindControl("chkchon");
            if (select.Checked == true)
            {
                id = grid.DataKeys[dr.RowIndex].Value.ToString().Trim();
                tendoanvien = ((Label)dr.FindControl("lblTenDoanVien")).Text;
                break;
            }
        }
        if (id != "")
        {
            SecurityLib.Sec_AES _ps = new SecurityLib.Sec_AES();
            Response.Redirect(PageURL.local + "DanhMuc/ChuyenSinhHoatDoan.aspx?id=" + _ps.Encrypt("4","gold",128) + "&subid=" + _ps.Encrypt("2","gold",128) + "&codeunionists=" + _ps.Encrypt(id.ToString(),"gold",128) + "&nameunionists=" + _ps.Encrypt(tendoanvien,"gold",128));
        }
        else
        {
            statusLabel.Visible = true;
            statusLabel.Text = "Chọn 1 đoàn viên!";
        }
    }
    //hàm chuyển sang dự bị
    protected void btnstatus_Click(object sender, EventArgs e)
    {
        CheckBox select;
        string id = "";
        foreach (GridViewRow dr in grid.Rows)
        {
            select = (CheckBox)dr.FindControl("chkchon");
            if (select.Checked == true)
            {
                id = grid.DataKeys[dr.RowIndex].Value.ToString().Trim();
                CatalogAccess.CapNhatTrangThaiDoanVien(id, 2);
            }
        }
        BindGrid();
    }
    protected void btncloseprint_Click(object sender, EventArgs e)
    {
        pncontent.Visible = true;
        pndetail.Visible = false;
        pnPrint.Visible = false;
        
    }
    protected void LinkButtonPrint_Click(object sender, EventArgs e)
    {
        PrintProfile(txtMaDoanVien1.Text.Trim());
    }
    //autocomplete by codeid
    [System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
    public static string[] GetCompletionList_byid(string prefixText)
    {
        _dbDataContext _db=new _dbDataContext();
        var val = (from p in _db.tblDoanViens.Where(r => r.TrangThai == 1 && r.TrangThaiXoa == false && r.TrucThuoc.Trim() == donvi1 && r.MaDonVien.Trim().Contains(prefixText)) select p).ToList();
        string[] items = new string[val.ToList().Count];
        int i = 0;
        foreach (var item in val)
        {
            items.SetValue(item.MaDonVien.Trim(), i);
            i++;
        }
        return items;
    }
    //autocomplete by name
    [System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
    public static string[] GetCompletionList_byname(string prefixText)
    {
        _dbDataContext _db = new _dbDataContext();
        var val = (from p in _db.tblDoanViens.Where(r => r.TrangThai == 1 && r.TrangThaiXoa == false && r.TrucThuoc.Trim() == donvi1 && r.HoTen.Trim().Contains(prefixText)) select p).ToList();
        string[] items = new string[val.ToList().Count];
        int i = 0;
        foreach (var item in val)
        {
            items.SetValue(item.HoTen.Trim(), i);
            i++;
        }
        return items;
    }
    protected void linkcapso_Click(object sender, EventArgs e)
    {
        if (rdbso.Checked == false && rdbthe.Checked == false)
        {
            lblmessagecapthe.Text = "Chọn cấp sổ/thể trước khi thực hiện";
            return;
        }
        else
        {
            if (rdbso.Checked == true)
            {
                if(!CatalogAccess.KiemTraSo_The_DaCap(txtmadoanviencapsodoan.Value,2))//truong hop da duoc cap
                {
                    tblTheSoDoan _tb = new tblTheSoDoan();
                    _tb.NghiQuyet = txtnghiquyetcapsoth.Text;
                    _tb.LyDoDuocCapThe = txtlydocapsothe.Text;
                    _tb.NgayCapThe_So = CatalogAccess.ConvertToDate(txtngaycapsothe.Text);
                    _tb.SoDuocCap = txtsosothe.Text;
                    _tb.MaDoanVien = txtmadoanviencapsodoan.Value;
                    _tb.Loai = 2;
                    try
                    {
                        _db.tblTheSoDoans.InsertOnSubmit(_tb);
                        _db.SubmitChanges();
                        lblmessagecapthe.Text = "Thực hiện thành công.";
                    }
                    catch { lblmessagecapthe.Text = "Thực hiện không thành công."; }
                }
                else
                {
                    lblmessagecapthe.Text = "Đoàn viên này đã được cấp sổ đoàn.";
                }
            }
            else
            {
                if (!CatalogAccess.KiemTraSo_The_DaCap(txtmadoanviencapsodoan.Value, 1))
                {
                    tblTheSoDoan _tb = new tblTheSoDoan();
                    _tb.NghiQuyet = txtnghiquyetcapsoth.Text;
                    _tb.LyDoDuocCapThe = txtlydocapsothe.Text;
                    _tb.NgayCapThe_So = CatalogAccess.ConvertToDate(txtngaycapsothe.Text);
                    _tb.SoDuocCap = txtsosothe.Text;
                    _tb.MaDoanVien = txtmadoanviencapsodoan.Value;
                    _tb.Loai = 1;
                    try
                    {
                        _db.tblTheSoDoans.InsertOnSubmit(_tb);
                        _db.SubmitChanges();
                        lblmessagecapthe.Text = "Thực hiện thành công.";
                    }
                    catch { lblmessagecapthe.Text = "Thực hiện không thành công."; }
                }
                else
                {
                    lblmessagecapthe.Text = "Đoàn viên này đã được cấp thẻ đoàn.";
                }
            }
        }
    }
    protected void rdbso_CheckedChanged(object sender, EventArgs e)
    {
        try
        {
            var item = _db.tblTheSoDoans.Single(r => r.MaDoanVien.Trim() == txtmadoanviencapsodoan.Value && r.Loai == 2);
            txtnghiquyetcapsoth.Text = item.NghiQuyet;
            txtlydocapsothe.Text = item.LyDoDuocCapThe;
            txtngaycapsothe.Text = string.Format("{0:dd/MM/yyyy}",item.NgayCapThe_So);
            txtsosothe.Text = CatalogAccess.GetSoThe_SoSo(2, txtmadoanviencapsodoan.Value);
            txtsosothe.ReadOnly = true;
        }
        catch {
            txtnghiquyetcapsoth.Text = "";
            txtlydocapsothe.Text = "";
            txtngaycapsothe.Text = "";
            txtsosothe.Text = "";
        }
    }
    protected void rdbthe_CheckedChanged(object sender, EventArgs e)
    {
        try
        {
            var item = _db.tblTheSoDoans.Single(r => r.MaDoanVien.Trim() == txtmadoanviencapsodoan.Value && r.Loai == 1);
            txtnghiquyetcapsoth.Text = item.NghiQuyet;
            txtlydocapsothe.Text = item.LyDoDuocCapThe;
            txtngaycapsothe.Text = string.Format("{0:dd/MM/yyyy}", item.NgayCapThe_So);
            txtsosothe.Text = CatalogAccess.GetSoThe_SoSo(1, txtmadoanviencapsodoan.Value);
            txtsosothe.ReadOnly = true;
        }
        catch {
            txtnghiquyetcapsoth.Text = "";
            txtlydocapsothe.Text = "";
            txtngaycapsothe.Text = "";
            txtsosothe.Text = "";
        }
    }
    string tendoanviencapthe = "";
    protected void linkcapsodoanthedoan_Click(object sender, EventArgs e)
    {
        CheckBox select;
        string id = "";
        foreach (GridViewRow dr in grid.Rows)
        {
            select = (CheckBox)dr.FindControl("chkchon");
            if (select.Checked == true)
            {
                id = grid.DataKeys[dr.RowIndex].Value.ToString().Trim();
                tendoanviencapthe = ((Label)dr.FindControl("lblTenDoanVien")).Text;
                break;
            }
        }
        if (id != "")
        {
            txtmadoanviencapsodoan.Value = id;
            txttendoanviencapthe.Text = tendoanviencapthe;
            pncapsothe.Visible = true;
            pncontent.Visible = false;
            pndetail.Visible = false;
            pnPrint.Visible = false;
        }
        else
        {
            statusLabel.Visible = true;
            statusLabel.Text = "Chọn 1 đoàn viên!";
        }
    }
    protected void linkcapsoclose_Click(object sender, EventArgs e)
    {
        pncapsothe.Visible = false;
        pncontent.Visible = true;
        pndetail.Visible = false;
        pnPrint.Visible = false;
    }

    protected void chkbox_OnCheckedChanged(object sender, EventArgs e)
    {
        int selRowIndex = ((GridViewRow)(((CheckBox)sender).Parent.Parent)).RowIndex;
        string madoanvien = grid.DataKeys[selRowIndex].Value.ToString();
        CheckBox cb = (CheckBox)grid.Rows[selRowIndex].FindControl("chk_sinhhoatnoicutru");
        var val = _db.tblDoanViens.Single(r => r.MaDonVien.Trim() == madoanvien);
        val.DoanVienSinhHoatNoiCuTru = cb.Checked;
        try
        {
            _db.SubmitChanges();
        }
        catch { }
    }
    //xu ly doan vien danh du
    protected void btnsavedanhdu_Click(object sender, EventArgs e)
    {
        CheckBox select;
        string id = "";
        foreach (GridViewRow dr in grid.Rows)
        {
            select = (CheckBox)dr.FindControl("chkchon");
            if (select.Checked == true)
            {
                id = grid.DataKeys[dr.RowIndex].Value.ToString().Trim();
                break;
            }
        }
        if (id != "")
        {
            bool success = CatalogAccess.InsertDoanVienDanhDu(txtNghiquyedanhdu.Text, txtlydodanhdu.Text, txtngaykydanhdu.Text, id);
            if (success)
            {
                success = CatalogAccess.CapNhatTrangThaiDoanVien(id, 7);
                if (success)
                {
                    statusLabel.Visible = true;
                    statusLabel.Text = "Thực hiện thành công!";
                    BindGrid();
                }
                else
                {
                    statusLabel.Visible = true;
                    statusLabel.Text = "Không thực hiện được!";
                }
            }
            else
            {
                statusLabel.Visible = true;
                statusLabel.Text = "Không thực hiện được!";
            }
        }
        else
        {
            statusLabel.Visible = true;
            statusLabel.Text = "Chọn 1 đoàn viên!";
        }
    }
    //Giới thiệu đoàn viên ưu tú cho đảng
    protected void chk_GioiThieuChoDang_CheckedChanged(object sender, EventArgs e)
    {
        int selRowIndex = ((GridViewRow)(((CheckBox)sender).Parent.Parent)).RowIndex;
        string madoanvien = grid.DataKeys[selRowIndex].Value.ToString();
        CheckBox cb = (CheckBox)grid.Rows[selRowIndex].FindControl("chk_GioiThieuChoDang");
        if (cb.Checked == true)
        {
            tblGioiThieuChoDang _tb = new tblGioiThieuChoDang();
            _tb.MaDoanVien = madoanvien;
            string ngaygt = DateTime.Now.Day.ToString() + "/" + DateTime.Now.Month + "/" + DateTime.Now.Year;
            _tb.NgayGioiThieu = CatalogAccess.ConvertToDate(ngaygt);
            _tb.DuocKetNapDang = false;
            try
            {
                _db.tblGioiThieuChoDangs.InsertOnSubmit(_tb);
                _db.SubmitChanges();
            }
            catch { SecurityLib.ToolsMore.ShowPopUpMsg("Lỗi khi thực hiện.",this.Page); }
        }
        else
        {
            var val = _db.tblGioiThieuChoDangs.Where(r => r.MaDoanVien.Trim() == madoanvien);
            if (val.Count() > 0)
            {
                try
                {
                    _db.tblGioiThieuChoDangs.DeleteAllOnSubmit(val);
                    _db.SubmitChanges();
                }
                catch { }
            }
        }
    }
    protected void grid_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        grid.PageIndex = e.NewPageIndex;
        BindGrid();
    }
}